//package com.lx.jobDecisionDemo;
//
//import org.springframework.batch.core.Job;
//import org.springframework.batch.core.Step;
//import org.springframework.batch.core.StepContribution;
//import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
//import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
//import org.springframework.batch.core.job.flow.JobExecutionDecider;
//import org.springframework.batch.core.scope.context.ChunkContext;
//import org.springframework.batch.core.step.tasklet.Tasklet;
//import org.springframework.batch.repeat.RepeatStatus;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///** 决策器的定义及应用
// * 1.Decision：为我们提供下一步执行哪一个Step提供条件决策
// * 2.JobExecutionDecider:接口，提供决策条件
// * @author lixing
// * @date 2021/7/11 21:39
// */
//@Configuration
//public class JobDecisionConfiguration {
//
//    @Autowired
//    private JobBuilderFactory jobBuilderFactory;
//
//    @Autowired
//    private StepBuilderFactory stepBuilderFactory;
//
//    //编写Job
//    @Bean
//    public Job FlowDecisionJob() {
//        return jobBuilderFactory.get("FlowDecisionJob")
//                .start(firstStep()).next(myDecider())
//                .from(myDecider()).on("EVEN").to(evenStep())
//                .from(myDecider()).on("ODD").to(oddStep())
//                .from(oddStep()).on("*").to(myDecider())
//                .end()
//                .build();
//
//    }
//    @Bean
//    public Step firstStep() {
//        return stepBuilderFactory.get("firstStep").tasklet(new Tasklet() {
//
//            @Override
//            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
//                System.out.println("Hello firstStep..");
//                return RepeatStatus.FINISHED;
//            }
//        }).build();
//
//    }
//
//    @Bean
//    public Step evenStep() {
//        return stepBuilderFactory.get("evenStep").tasklet(new Tasklet() {
//
//            @Override
//            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
//                System.out.println("Hello evenStep..");
//                return RepeatStatus.FINISHED;
//            }
//        }).build();
//
//    }
//
//    @Bean
//    public Step oddStep() {
//        return stepBuilderFactory.get("oddStep").tasklet(new Tasklet() {
//
//            @Override
//            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
//                System.out.println("Hello oddStep..");
//                return RepeatStatus.FINISHED;
//            }
//        }).build();
//
//    }
//
//    //编写决策器
//    @Bean
//    public JobExecutionDecider myDecider() {
//        return new myDecider();
//
//    }
//
//    /**
//     * 我们观察控制台，分析结果：首先job中先运行firstStep(),然后进入到myDecider中Count++,
//     * 此时count=1，返回”ODD”,job中执行oddStep(),然后无论什么状态再次进入myDecider中，
//     * 此时count=2,故返回”EVEN”，下一步执行evenStep();
//     */
//}
